package br.com.insight.consultoria.integracao.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;

import br.com.insight.consultoria.entity.PerguntaSecreta;
import br.com.insight.consultoria.erro.exception.InsightConstants;
import br.com.insight.consultoria.erro.exception.InsightDaoException;
import br.com.insight.consultoria.erro.exception.InsightException;
import br.com.insight.consultoria.erro.exception.SistemaException;
import br.com.insight.consultoria.integracao.dao.genericdao.GenericDAO;
import br.com.insight.consultoria.integracao.dao.interfacedao.PerguntaSecretaDAO;

public class PerguntaSecretaImpDAO extends GenericDAO implements PerguntaSecretaDAO {
	
	@Override
	public void inserir(PerguntaSecreta perguntaSecreta)
			throws InsightException {
		
		try{
			
			saveOrUpdateEntity(perguntaSecreta);
			
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
	}
	
	@Override
	public void alterar(PerguntaSecreta perguntaSecreta)
			throws InsightException {
		
		try{
			
			saveOrUpdateEntity(perguntaSecreta);
			
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
	}
	
	@Override
	public void excluir(PerguntaSecreta perguntaSecreta)
			throws InsightException {
		
		try{
			
			deleteEntity(perguntaSecreta);
			
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
	}
	
	@Override
	public PerguntaSecreta getPerguntaSecreta(Long id)
			throws InsightException {
		
		PerguntaSecreta perguntaSecreta=null;
		
		try{
			
			perguntaSecreta=(PerguntaSecreta) getEntityById(PerguntaSecreta.class, id);
			
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
		return perguntaSecreta;
	}
	
	@Override
	public List<PerguntaSecreta> listaPerguntaSecreta()
			throws InsightException {
		
		List<PerguntaSecreta> lista=null;
		
		try{
			
			lista=findAll(PerguntaSecreta.class);
			
		}catch(DataAccessException sql){
			
			throw new InsightDaoException(InsightConstants.MENSAGEM_ERRO_ACESSO_BANCO,sql);
		
		}catch(Exception ex){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,ex);
			
		}
		
		return lista;
	}

}
